package SingletonPattern;

/**
 * Created with IntelliJ IDEA.
 * Description:单例模式
 * User: 阿宾
 * Date: 2025-03-27
 * Time: 10:36
 */

//使用特殊手段，让这个类只能创建一个实例
class Singleton{
    /*
    instance 是static修饰的，所以它是类属性，表示的是类对象（Singleton.class）中的属性
    因为每个类的类对象只存在一个，所以类对象中的属性instance就只有一个，所以instance指向的对象
    就是唯一的一个对象。
     */
    private static Singleton instance = new Singleton();

    //其他代码要想使用这个类的实例，需要通过这个方法来进行获取对象，而不是在其他代码找那个重新new这个对象
    public static Singleton getInstance(){
        return instance;
    }
    //构造方法设置成私有，就可以保证其他代码中不能new对象
    private Singleton(){}
}

public class Test1 {
    public static void main(String[] args) {
        //Singleton s = new Singleton(); // error,不能new，因为构造方法是用private修饰的
        Singleton s = Singleton.getInstance();//获取实例
        Singleton s1 = Singleton.getInstance();//获取实例
        System.out.println(s == s1);//true 说明获取到的实例对象是同一个，这就保证了类的实例只有一个
    }
}
